AWS Elastic Disaster Recovery (DRS) のフェイルオーバー環境で発生したファイル変更はフェイルバック時に引き継がれるか教えてください

AWS Elastic Disaster Recovery (DRS) のフェイルオーバー環境で発生したファイル変更はフェイルバック時に引き継がれるか教えてください

Clock Icon2024.12.16

この記事は アノテーション株式会社 AWS Technical Support Advent Calendar 202X | Advent Calendar 2024 - Qiita 16日目の記事です。

困っていること

AWS Elastic Disaster Recovery (DRS) を利用して東京リージョンと大阪リージョン間で DR 構成を組んでいます。
フェイルオーバー実行後、フェイルオーバーインスタンス上で新たにファイルの変更などが発生した場合、その変更内容はフェイルバックを実行した際にフェイルバックインスタンスにも反映されるでしょうか?

どう対応すればいいの?

はい、フェイルオーバーインスタンスに加えた変更はフェイルバックインスタンスにも反映されます。
ステートフルなサーバで DRS を利用しており、フェイルオーバー後にソースインスタンスからファイルの変更差分が発生してしまったとしても、その差分はフェイルバック実行時に吸収することが可能なのでご安心ください。

やってみた

実際にフェイルオーバーインスタンスに変更を加えた上で、その変更がフェイルバックインスタンスにも反映されるか確認してみたいと思います。
簡略図ではありますが、今回の検証の構成は以下の通りです。手順的には ②まで完了した状態(東京リージョンにあるソースインスタンス (Windows Server 2022)に DRS をインストールし、大阪リージョンにレプリケーション完了した状態)から作業をはじめていきます。
スクリーンショット 2024-12-16 090105

大阪リージョンの DRS コンソールから対象のサーバを選択し、「リカバリジョブを開始」→「リカバリを開始」を押下し、ポイントインタイムの画面で「最新のデータを使用する」を選択したら、「リカバリを開始」を実行して、フェイルオーバーインスタンスを大阪リージョンで起動します。
※「最新のデータを使用する」を選択することで、最新のレプリケーション状況を反映した状態でフェイルオーバーインスタンスが起動されます[1]
スクリーンショット 2024-12-12 133350
スクリーンショット 2024-12-12 133403

「ジョブが終了しました」という表示がジョブのログにでたらフェイルオーバーインスタンスの起動が完了しています。
スクリーンショット 2024-12-12 140056

続けて「リカバリインスタンス」メニューから起動したインスタンスを選択後、「リバースレプリケーションを開始」を押下し、リバースレプリケーションを開始しておきます。
スクリーンショット 2024-12-12 143657
リバースレプリケーションが開始されたことを確認後、フェイルオーバーインスタンスに接続し、デスクトップに "failbacktest" という名前のテストファイルを作成します。
フェイルバック実行後、フェイルバックインスタンスにこのファイルが存在していれば、フェイルオーバーインスタンスで行ったファイルの変更差分が吸収されていることの確認になります。
スクリーンショット 2024-12-12 144228

フェイルバックインスタンスの起動は元のソースインスタンスが存在しているリージョン (今回の場合は東京リージョン) から実施する必要があるので、リージョンを切り替えて DRS コンソールを開き直します。
ソースサーバの欄に当該のサーバが表示されているので、リバースレプリケーションが完了し、「リカバリの準備完了」の項が「準備完了」になっていることを確認します。
スクリーンショット 2024-12-12 152123
確認できたら「リカバリジョブを開始」→「フェイルバックのために起動」を押下後、ポイントインタイムの画面で「最新のデータを使用する」を選択し、「フェイルバックのために起動」を実行します。
スクリーンショット 2024-12-12 152200

上記手順でフェイルバック用のジョブが開始されるので完了までしばらく待ちます。
「ジョブが終了しました」という表示がジョブのログにでたらフェイルバックインスタンスが起動しています。
スクリーンショット 2024-12-12 154530

起動したフェイルバックインスタンスに RDP で接続したところ、デスクトップに "failbacktest" ファイルが存在している(フェイルオーバーインスタンスに加えた変更が反映されている)ことが確認できました。
スクリーンショット 2024-12-12 155133

おわりに

クロスリージョン構成におけるフェイルバック実行までの流れを試してみました。フェイルオーバーインスタンスで発生した変更がフェイルバック実行時に引き継がれることも確認できましたが、実際に DRS の利用を計画している場合は事前にテストを行って動作を確認しておくことをお勧めいたします。
また、これはジャストアイデアですが、DRS はオンプレミス環境にもインストールが可能なので、ステートフルなサーバをオンプレから AWS に移行することを計画している場合、Application Migration Service (MGN) の代わりに移行ツールとして利用することで、環境切り替え失敗時の切り戻しの考慮が容易になるケースがあるかもしれません。
オンプレミス環境へのフェイルバックに関しては以下の記事で紹介していますので、ご興味のある方は合わせてご参照いただけますと幸いです。

https://dev.classmethod.jp/articles/aws-elastic-disaster-recovery-drs-failbackclient

脚注
  1. What are Point in Time Snapshots? ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.